package com.deyuanyun.pic.settings.mapper.pipe;

import com.deyuanyun.pic.settings.domain.pipe.PipeLineElement;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

@Repository("PipeLineElementSettingMapper")
public interface PipeLineElementMapper {

    int deleteByPrimaryKey(String id);

    int insert(PipeLineElement record);

    int insertSelective(PipeLineElement record);

    PipeLineElement selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(PipeLineElement record);

    int updateByPrimaryKey(PipeLineElement record);

    /**
     * 统计获取到管道的起始或者终止场站阀室
     * @param pipeLineId 管道id
     * @param type 不为空统计终止场站阀室，反之统计起始场站阀室
     * @return
     * @throws
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-03
     */
    String findFromToValveRoom(@Param("pipeLineId") String pipeLineId, @Param("type") String type);


    /**
     * 根据管道id获取到该管道下的所有场站阀室
     * @param pipeLineId 管道id
     * @param type  管道组成元素类型：为1是查询地面标识，为0查询场站阀室, 为空时查询全部
     * @return
     */
    public List<PipeLineElement> queryElementsById(@Param("pipeLineId") String pipeLineId,
                                                   @Param("type") String type);

    /**
     * 根据管道id查询所有的场站阀室
     * @param pipeLineId 管道id
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-03
     */
    public List<String> queryValveRoomsIdString(@Param("pipeLineId") String pipeLineId);

    /**
     * 逻辑删除管道下的指定id的场站阀室
     * @param pipeLineId 管道id
     * @param ids 场站阀室
     * @return 
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-03
     */
    public int updateVRElementByIds(@Param("pipeLineId") String pipeLineId,@Param("ids") List<String> ids);

    /**
     * 在删除为发布的管道信息的时候真实删除该管道下的所有场站阀室
     * @param pipeLineIds 管道id数组
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-03
     */
    public int deleteVRElement(@Param("pipeLineIds") List<String> pipeLineIds);

    /**
     * 根据管道要素id数组，进行是否用于分段操作
     * @param id 管道要素id
     * @param status 0为否，1为是
     * @param mileage 绝对距离
     * @return
     * @throws
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-10-10
     */
    public int updateElementSegmentation(@Param("id") String id, @Param("status") String status, @Param("mileage") BigDecimal mileage);

}